Skip to content

Conversation

@nvazquez
Copy link
Contributor

Description

This PR extends the zoneid parameter on the update APIs: updateVpcOffering, updateServiceOffering, updateDiskOffering, in a similar way to: #12431 (addressing #12399)

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • Build/CI
  • Test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

Screenshots (if appropriate):

How Has This Been Tested?

How did you try to break this feature and the system with this change?

@codecov
Copy link

codecov bot commented Jan 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 16.23%. Comparing base (f1f779a) to head (3917e8f).
⚠️ Report is 15 commits behind head on 4.20.

Additional details and impacted files
@@            Coverage Diff            @@
##               4.20   #12440   +/-   ##
=========================================
  Coverage     16.23%   16.23%           
  Complexity    13381    13381           
=========================================
  Files          5657     5657           
  Lines        499024   499024           
  Branches      60562    60562           
=========================================
  Hits          81029    81029           
+ Misses       408959   408958    -1     
- Partials       9036     9037    +1     
Flag Coverage Δ
uitests 4.03% <ø> (ø)
unittests 17.09% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

@DaanHoogland DaanHoogland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clgtm

Copy link
Collaborator

@abh1sar abh1sar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code LGTM

Copy link
Member

@vishesh92 vishesh92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clgtm

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 16400

@RosiKyu RosiKyu self-assigned this Jan 19, 2026
Copy link
Collaborator

@RosiKyu RosiKyu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Summary

Tested the fix for the zoneIds parameter length limitation in updateServiceOffering, updateDiskOffering, and updateVpcOffering APIs. The PR successfully increases the parameter limit from 255 to 4096 characters, allowing offerings to be assigned to more than 7 zones (100+ zones now supported).

Test Environment Result
TC1: updateServiceOffering - Bug Verification Baseline 4.20 Bug Confirmed
TC2: updateDiskOffering - Bug Verification Baseline 4.20 Bug Confirmed
TC3: updateVpcOffering - Bug Verification Baseline 4.20 Bug Confirmed
TC4: updateServiceOffering - Fix Verification PR #12440 Pass
TC5: updateDiskOffering - Fix Verification PR #12440 Pass
TC6: updateVpcOffering - Fix Verification PR #12440 Pass (parameter accepted)

Bug Verification (Baseline Environment - Without Fix)

Environment

  • CloudStack Version: 4.20.3 (without PR #12440)
  • Zone: ref-trl-10687-k-Mol9-rositsa-kyuchukova + 9 fake zones (inserted via DB)

TC1: updateServiceOffering - Bug Verification

Objective: Confirm the bug exists - updateServiceOffering API rejects zoneIds parameter exceeding 255 characters
Expected Result: HTTP 431 error with message about max allowed length 255
Actual Result: Bug confirmed - API rejected the request with HTTP 431 error
Test Evidence:

[root@ref-trl-10687-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update serviceoffering id=52420a8a-19f2-4904-8e5f-5943d0eeb783 zoneid=2453151f-30ec-4651-a0cd-fc72c9be87e9,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
🙈 Error: (HTTP 431, error code 9999) Unable to execute API command updateserviceoffering due to invalid value. Value greater than max allowed length 255 for param: zoneIds

TC2: updateDiskOffering - Bug Verification

Objective: Confirm the bug exists - updateDiskOffering API rejects zoneIds parameter exceeding 255 characters
Expected Result: HTTP 431 error with message about max allowed length 255
Actual Result: Bug confirmed - API rejected the request with HTTP 431 error
Test Evidence:

[root@ref-trl-10687-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update diskoffering id=036aa58b-10e5-4252-b581-c68d8b121edc zoneid=2453151f-30ec-4651-a0cd-fc72c9be87e9,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
🙈 Error: (HTTP 431, error code 9999) Unable to execute API command updatediskoffering due to invalid value. Value greater than max allowed length 255 for param: zoneIds

TC3: updateVpcOffering - Bug Verification

Objective: Confirm the bug exists - updateVpcOffering API rejects zoneIds parameter exceeding 255 characters
Expected Result: HTTP 431 error with message about max allowed length 255
Actual Result: Bug confirmed - API rejected the request with HTTP 431 error
Test Evidence:

[root@ref-trl-10687-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update vpcoffering id=4e2d1e9e-f6ea-4c14-91a3-b7c724c43f04 zoneid=2453151f-30ec-4651-a0cd-fc72c9be87e9,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
🙈 Error: (HTTP 431, error code 9999) Unable to execute API command updatevpcoffering due to invalid value. Value greater than max allowed length 255 for param: zoneIds

Fix Verification (PR #12440 Environment)

Environment

  • CloudStack Version: 4.20 with PR #12440
  • Zone: ref-trl-10671-k-Mol9-rositsa-kyuchukova + 9 fake zones (inserted via DB)

TC4: updateServiceOffering - Fix Verification

Objective: Verify updateServiceOffering API accepts zoneIds parameter exceeding 255 characters after the fix
Expected Result: Service offering updated successfully with all 10 zones
Actual Result: Success - API accepted 369 characters and updated the service offering
Test Evidence:

[root@ref-trl-10671-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update serviceoffering id=3d523df1-ce8c-4a8e-93b2-56fd44ad4f89 zoneid=18c77350-37bf-4055-9167-9c37492506f6,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
{
  "serviceoffering": {
    "name": "Small Instance",
    "zone": "fake-zone-01,fake-zone-02,fake-zone-03,fake-zone-04,fake-zone-05,fake-zone-06,fake-zone-07,fake-zone-08,fake-zone-09,ref-trl-10671-k-Mol9-rositsa-kyuchukova",
    "zoneid": "11111111-1111-1111-1111-111111111111,18c77350-37bf-4055-9167-9c37492506f6,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff",
    "state": "Active"
  }
}

TC5: updateDiskOffering - Fix Verification

Objective: Verify updateDiskOffering API accepts zoneIds parameter exceeding 255 characters after the fix
Expected Result: Disk offering updated successfully with all 10 zones
Actual Result: Success - API accepted 369 characters and updated the disk offering
Test Evidence:

[root@ref-trl-10671-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update diskoffering id=caee40d9-400a-44d6-913c-fd81353b55f1 zoneid=18c77350-37bf-4055-9167-9c37492506f6,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
{
  "diskoffering": {
    "name": "Small",
    "zone": "fake-zone-01,fake-zone-02,fake-zone-03,fake-zone-04,fake-zone-05,fake-zone-06,fake-zone-07,fake-zone-08,fake-zone-09,ref-trl-10671-k-Mol9-rositsa-kyuchukova",
    "zoneid": "11111111-1111-1111-1111-111111111111,18c77350-37bf-4055-9167-9c37492506f6,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff",
    "state": "Active"
  }
}

TC6: updateVpcOffering - Fix Verification

Objective: Verify updateVpcOffering API accepts zoneIds parameter exceeding 255 characters after the fix
Expected Result: Parameter accepted (may fail on zone validation with fake zones)
Actual Result: Pass - Parameter accepted (369 chars), failed on zone validation (expected with fake zones)
Test Evidence:

[root@ref-trl-10671-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk update vpcoffering id=741c8b65-fba9-4614-90fb-a24cb066c37c zoneid=18c77350-37bf-4055-9167-9c37492506f6,aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb,cccccccc-cccc-cccc-cccc-cccccccccccc,dddddddd-dddd-dddd-dddd-dddddddddddd,eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee,ffffffff-ffff-ffff-ffff-ffffffffffff,11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222,33333333-3333-3333-3333-333333333333
{
  "jobresult": {
    "errorcode": 431,
    "errortext": "Failed to create VPC offering because invalid zone has been specified."
  }
}

Note: The zoneIds parameter was accepted (no "max allowed length 255" error). The failure is due to VPC offering requiring valid/complete zone infrastructure, not the parameter length limitation.

@DaanHoogland DaanHoogland merged commit 6a98359 into apache:4.20 Jan 22, 2026
25 checks passed
@DaanHoogland DaanHoogland deleted the 420-updatezoneids-params branch January 22, 2026 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants